We are dependent, in the modern world, on our computers and the applications that they run. We rely on our software, in just about every aspect of work and home lives, to run correctly. Software errors can cause serious problems in many settings, such as medical applications, banking applications, controls in airplanes and motor vehicles, and so forth.
Thus, it is quite important that computer application programs function properly. To ensure such reliability, the applications must be tested to ensure they have as few errors, or “bugs”, as possible. In the initial days of application development, computer software companies would hire in-house testers to attempt to mimic end-user input and thus discover problems in the code, a method that is used to this day. Another common method of testing is to ship beta versions—software that is known to still contain errors—to customer sites; and the customers then, by using the software, continue to test it. However, both in-house and beta testing require either excessively long periods of time or huge numbers of user sites to find sufficiently large numbers of errors to produce adequately error-free computer applications. To solve these problems, automatic testing programs have been developed which mimic keyboard and mouse user input and which can be used to test applications much more quickly, as unlike humans they run continuously and at-speed. Thus, they can be used to more exhaustively test applications leading to higher quality software.
To test the control items of an application, a test program that emulates keyboard and mouse data must be able to select items on the screen. At a minimum, the item must be visible for it to be selected. The term “Select Item” herein means a user interaction with a UI element (item) via mouse, keyboard, or another input device.